/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package py.com.davweb;

import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.TextArea;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.Option;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.FacesException;
import javax.faces.event.ValueChangeEvent;
import javax.servlet.ServletContext;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.apache.commons.logging.impl.Log4JLogger;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import py.com.domain.Barrios;
import py.com.domain.Causas;
import py.com.domain.Ciudades;
import py.com.domain.Denuncias;
import py.com.domain.Departamentos;
import py.com.domain.Derivaciones;
import py.com.domain.Instancias;
import py.com.domain.Medios;
import py.com.domain.Paises;
import py.com.domain.PersonaDenuncia;
import py.com.domain.Personas;
import py.com.domain.Region;
import py.com.domain.Relaciones;
import py.com.domain.Responsables;
import py.com.domain.Sector;
import py.com.domain.SituacionLlegada;
import py.com.domain.SituacionPoblacional;
import py.com.domain.Tipos;
import py.com.domain.TiposPersonas;
import py.com.webdav.util.DAVReporter;
import py.com.webdav.util.HibernateUtil;
import py.com.webdav.util.Messages;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @version Page1.java
 * @version Created on Apr 21, 2010, 11:49:25 PM
 * @author markos
 */
public class RegistroDenuncia extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private SingleSelectOptionsList dropResponsableDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropResponsableDefaultOptions() {
        return dropResponsableDefaultOptions;
    }

    public void setDropResponsableDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropResponsableDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropMedioDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropMedioDefaultOptions() {
        return dropMedioDefaultOptions;
    }

    public void setDropMedioDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropMedioDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropCausaDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropCausaDefaultOptions() {
        return dropCausaDefaultOptions;
    }

    public void setDropCausaDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropCausaDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropCiudadDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropCiudadDefaultOptions() {
        return dropCiudadDefaultOptions;
    }

    public void setDropCiudadDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropCiudadDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropPaisDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropPaisDefaultOptions() {
        return dropPaisDefaultOptions;
    }

    public void setDropPaisDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropPaisDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropDepartamentoDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropDepartamentoDefaultOptions() {
        return dropDepartamentoDefaultOptions;
    }

    public void setDropDepartamentoDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropDepartamentoDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropBarrioDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropBarrioDefaultOptions() {
        return dropBarrioDefaultOptions;
    }

    public void setDropBarrioDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropBarrioDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropDerivacionDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropDerivacionDefaultOptions() {
        return dropDerivacionDefaultOptions;
    }

    public void setDropDerivacionDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropDerivacionDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropInstanciaDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropInstanciaDefaultOptions() {
        return dropInstanciaDefaultOptions;
    }

    public void setDropInstanciaDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropInstanciaDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropSectorDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropSectorDefaultOptions() {
        return dropSectorDefaultOptions;
    }

    public void setDropSectorDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropSectorDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropEstadoDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropEstadoDefaultOptions() {
        return dropEstadoDefaultOptions;
    }

    public void setDropEstadoDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropEstadoDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropTipoDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropTipoDefaultOptions() {
        return dropTipoDefaultOptions;
    }

    public void setDropTipoDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropTipoDefaultOptions = ssol;
    }
    private DropDown dropDepartamento = new DropDown();

    public DropDown getDropDepartamento() {
        return dropDepartamento;
    }

    public void setDropDepartamento(DropDown dd) {
        this.dropDepartamento = dd;
    }
    private DropDown dropBarrio = new DropDown();

    public DropDown getDropBarrio() {
        return dropBarrio;
    }

    public void setDropBarrio(DropDown dd) {
        this.dropBarrio = dd;
    }
    private DropDown dropEstado = new DropDown();

    public DropDown getDropEstado() {
        return dropEstado;
    }

    public void setDropEstado(DropDown dd) {
        this.dropEstado = dd;
    }
    private DropDown dropSector = new DropDown();

    public DropDown getDropSector() {
        return dropSector;
    }

    public void setDropSector(DropDown dd) {
        this.dropSector = dd;
    }
    private TextArea txtObservacion = new TextArea();

    public TextArea getTxtObservacion() {
        return txtObservacion;
    }

    public void setTxtObservacion(TextArea ta) {
        this.txtObservacion = ta;
    }
    private DropDown dropInstancia = new DropDown();

    public DropDown getDropInstancia() {
        return dropInstancia;
    }

    public void setDropInstancia(DropDown dd) {
        this.dropInstancia = dd;
    }
    private DropDown dropDerivacion = new DropDown();

    public DropDown getDropDerivacion() {
        return dropDerivacion;
    }

    public void setDropDerivacion(DropDown dd) {
        this.dropDerivacion = dd;
    }
    private DropDown dropTipo = new DropDown();

    public DropDown getDropTipo() {
        return dropTipo;
    }

    public void setDropTipo(DropDown dd) {
        this.dropTipo = dd;
    }
    private DropDown dropCiudad = new DropDown();

    public DropDown getDropCiudad() {
        return dropCiudad;
    }

    public void setDropCiudad(DropDown dd) {
        this.dropCiudad = dd;
    }
    private DropDown dropMedio = new DropDown();

    public DropDown getDropMedio() {
        return dropMedio;
    }

    public void setDropMedio(DropDown dd) {
        this.dropMedio = dd;
    }
    private Calendar calFecha = new Calendar();

    public Calendar getCalFecha() {
        return calFecha;
    }

    public void setCalFecha(Calendar c) {
        this.calFecha = c;
    }
    private DropDown dropResponsable = new DropDown();

    public DropDown getDropResponsable() {
        return dropResponsable;
    }

    public void setDropResponsable(DropDown dd) {
        this.dropResponsable = dd;
    }
    private SingleSelectOptionsList dropVictimaDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropVictimaDefaultOptions() {
        return dropVictimaDefaultOptions;
    }

    public void setDropVictimaDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropVictimaDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropDenunciadoDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropDenunciadoDefaultOptions() {
        return dropDenunciadoDefaultOptions;
    }

    public void setDropDenunciadoDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropDenunciadoDefaultOptions = ssol;
    }
    private SingleSelectOptionsList dropDenuncianteDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropDenuncianteDefaultOptions() {
        return dropDenuncianteDefaultOptions;
    }

    public void setDropDenuncianteDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropDenuncianteDefaultOptions = ssol;
    }
    private DropDown dropCausa = new DropDown();

    public DropDown getDropCausa() {
        return dropCausa;
    }

    public void setDropCausa(DropDown dd) {
        this.dropCausa = dd;
    }
    private SingleSelectOptionsList dropRegionDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropRegionDefaultOptions() {
        return dropRegionDefaultOptions;
    }

    public void setDropRegionDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropRegionDefaultOptions = ssol;
    }
    private DropDown dropVictima = new DropDown();

    public DropDown getDropVictima() {
        return dropVictima;
    }

    public void setDropVictima(DropDown dd) {
        this.dropVictima = dd;
    }
    private DropDown dropDenunciado = new DropDown();

    public DropDown getDropDenunciado() {
        return dropDenunciado;
    }

    public void setDropDenunciado(DropDown dd) {
        this.dropDenunciado = dd;
    }
    private TextField txtDenunciante = new TextField();

    public TextField getTxtDenunciante() {
        return txtDenunciante;
    }

    public void setTxtDenunciante(TextField dd) {
        this.txtDenunciante = dd;
    }
    private TextField txtResponsable = new TextField();

    public TextField getTxtResponsable() {
        return txtResponsable;
    }

    public void setTxtResponsable(TextField tf) {
        this.txtResponsable = tf;
    }
    private DropDown dropRelDenunciado = new DropDown();

    public DropDown getDropRelDenunciado() {
        return dropRelDenunciado;
    }

    public void setDropRelDenunciado(DropDown dd) {
        this.dropRelDenunciado = dd;
    }
    private DropDown dropRelDenunciante = new DropDown();

    public DropDown getDropRelDenunciante() {
        return dropRelDenunciante;
    }

    public void setDropRelDenunciante(DropDown dd) {
        this.dropRelDenunciante = dd;
    }
    private TextField txtVictima = new TextField();

    public TextField getTxtVictima() {
        return txtVictima;
    }

    public void setTxtVictima(TextField tf) {
        this.txtVictima = tf;
    }
    private TextField txtDenunciado = new TextField();

    public TextField getTxtDenunciado() {
        return txtDenunciado;
    }

    public void setTxtDenunciado(TextField tf) {
        this.txtDenunciado = tf;
    }
    private TextField txtIdVictima = new TextField();

    public TextField getTxtIdVictima() {
        return txtIdVictima;
    }

    public void setTxtIdVictima(TextField hf) {
        this.txtIdVictima = hf;
    }
    private TextField txtIdDenunciado = new TextField();

    public TextField getTxtIdDenunciado() {
        return txtIdDenunciado;
    }

    public void setTxtIdDenunciado(TextField hf) {
        this.txtIdDenunciado = hf;
    }
    private TextField txtIdDenunciante = new TextField();

    public TextField getTxtIdDenunciante() {
        return txtIdDenunciante;
    }

    public void setTxtIdDenunciante(TextField hf) {
        this.txtIdDenunciante = hf;
    }
    private DropDown dropDenunciante = new DropDown();

    public DropDown getDropDenunciante() {
        return dropDenunciante;
    }

    public void setDropDenunciante(DropDown dd) {
        this.dropDenunciante = dd;
    }
    private DropDown dropSituacionLlegada = new DropDown();

    public DropDown getDropSituacionLlegada() {
        return dropSituacionLlegada;
    }

    public void setDropSituacionLlegada(DropDown dd) {
        this.dropSituacionLlegada = dd;
    }
    private DropDown dropSituacionPoblacional = new DropDown();

    public DropDown getDropSituacionPoblacional() {
        return dropSituacionPoblacional;
    }

    public void setDropSituacionPoblacional(DropDown dd) {
        this.dropSituacionPoblacional = dd;
    }
    private TextField txtDenuncia = new TextField();

    public TextField getTxtDenuncia() {
        return txtDenuncia;
    }

    public void setTxtDenuncia(TextField tf) {
        this.txtDenuncia = tf;
    }

    // </editor-fold>
    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public RegistroDenuncia() {
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here

        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("Page1 Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }

        // </editor-fold>
        // Perform application initialization that must complete
        // *after* managed components are initialized
        // TODO - add your own initialization code here
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
        if (!ciudadUpd) {
            buildBarrios("");
        }
        if (!regionUpd) {
            buildRegion("");
        }
        if (!departamentoUpd) {
            buildCiudades("");
        }
        buildDepartamentos("");
        buildCausas();
        buildSector();
        buildResponsables("");
        buildDerivaciones();
        buildInstancias();
        buildMedios();
        buildPaises();
        buildEstados();
        buildPersonas();
        buildTipos();
        buildRelacionesDenunciado();
        buildRelacionesDenunciante();
        if (getSessionBean1().getDenuncia() != null) {
            try {
                Session s = HibernateUtil.getSessionFactory().getCurrentSession();
                Transaction t = s.beginTransaction();

                Denuncias d = (Denuncias) s.merge(getSessionBean1().getDenuncia());
                txtDenuncia.setText(d.getDeDenuncia().toString());
                setPersonas(d);
                if (d.getBaBarrio() != null) {
                    dropBarrio.setSelected(d.getBaBarrio().getBaBarrio().toString());
                }
                if (d.getDeCausa() != null) {
                    dropCausa.setSelected(d.getDeCausa().getCaCausa().toString());
                }
                if (d.getCiCiudad() != null) {
                    dropCiudad.setSelected(d.getCiCiudad().getCiCiudad().toString());
                }
                if (d.getDpDepartamento() != null) {
                    dropDepartamento.setSelected(d.getDpDepartamento().getDpDepartamento().toString());
                }
                if (d.getDeDerivacion() != null) {
                    dropDerivacion.setSelected(d.getDeDerivacion().getDrDerivacion().toString());
                }
                if (d.getDeInstancia() != null) {
                    dropInstancia.setSelected(d.getDeInstancia().getInInstancia().toString());
                }
                if (d.getDeMedio() != null) {
                    dropMedio.setSelected(d.getDeMedio().getMeMedio().toString());
                }
                if (d.getDeResponsable() != null) {
                    dropResponsable.setSelected(d.getDeResponsable().getReId().toString());
                }
                if (d.getDeSector() != null) {
                    dropSector.setSelected(d.getDeSector().getSpSector().toString());
                }
                if (d.getDeObservacion() != null) {
                    txtObservacion.setText(d.getDeObservacion().toString());
                }
                if (d.getDeFechaHora() != null) {
                    calFecha.setSelectedDate(d.getDeFechaHora());
                }
                if (d.getDeSituacionLlegada() != null) {
                    dropSituacionLlegada.setSelected(d.getDeSituacionLlegada().getSlSituacionLlegada().toString());
                }
                if (d.getDeSituacionPoblacional() != null) {
                    dropSituacionPoblacional.setSelected(d.getDeSituacionPoblacional().getSpSituacionPoblacional().toString());
                }

                t.commit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else if (!ajaxProcessing) {
            calFecha.setSelectedDate(null);
            dropSituacionLlegada.setSelected(null);
            dropSituacionPoblacional.setSelected(null);
            dropResponsable.setSelected(null);
            txtIdVictima.setText(null);
            txtIdDenunciado.setText(null);
            txtIdDenunciante.setText(null);
            txtVictima.setText(null);
            txtDenunciado.setText(null);
            txtDenunciante.setText(null);
            dropRelDenunciado.setSelected(null);
            dropRelDenunciante.setSelected(null);
            dropMedio.setSelected(null);
            dropCausa.setSelected(null);
            dropEstado.setSelected(null);
            dropDerivacion.setSelected(null);
            dropInstancia.setSelected(null);
            dropTipo.setSelected(null);
            dropDepartamento.setSelected(null);
            dropCiudad.setSelected(null);
            dropBarrio.setSelected(null);
            dropSector.setSelected(null);
            txtObservacion.setText(null);
        }
    }

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    private void setPersonas(Denuncias d) {
        Set<PersonaDenuncia> pdList = d.getPersonaDenunciaSet();
        for (PersonaDenuncia personaDenuncia : pdList) {
            if (personaDenuncia.getTiposPersonas().getTpTipoPersona() == TiposPersonas.VICTIMA) {
                txtIdVictima.setText(personaDenuncia.getPersonas().getDnPersona().toString());
                txtVictima.setText(personaDenuncia.getPersonas().getDnApellidoNombre().toString());
                dropRelDenunciado.setSelected(personaDenuncia.getPdRelacion1().getReRelacion());
                dropRelDenunciante.setSelected(personaDenuncia.getPdRelacion2().getReRelacion());
            }
            if (personaDenuncia.getTiposPersonas().getTpTipoPersona() == TiposPersonas.DENUNCIANTE) {
                txtIdDenunciante.setText(personaDenuncia.getPersonas().getDnPersona().toString());
                txtDenunciante.setText(personaDenuncia.getPersonas().getDnApellidoNombre().toString());
            }
            if (personaDenuncia.getTiposPersonas().getTpTipoPersona() == TiposPersonas.DENUNCIADO) {
                txtIdDenunciado.setText(personaDenuncia.getPersonas().getDnPersona().toString());
                txtDenunciado.setText(personaDenuncia.getPersonas().getDnApellidoNombre().toString());
            }
        }
    }

    private void buildPaises() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Paises");

        listaPaises = q.list();
        listaPaisesOption = new ArrayList<Option>();
        for (Paises p : listaPaises) {
            listaPaisesOption.add(new Option(p.getPaPais().toString(), p.getPaDescripcion()));
        }
        tran.commit();
    }

    private void buildCausas() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Causas");

        listaCausas = q.list();
        listaCausasOption = new ArrayList<Option>();
        for (Causas causas : listaCausas) {
            listaCausasOption.add(new Option(causas.getCaCausa().toString(), causas.getCaDescripcion()));
        }
        tran.commit();
    }

    private void buildSector() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Sector");

        listaSectores = q.list();
        listaSectoresOption = new ArrayList<Option>();
        for (Sector s : listaSectores) {
            listaSectoresOption.add(new Option(s.getSpSector().toString(), s.getSpNombre()));
        }
        tran.commit();
    }

    private void buildPersonas() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Personas");

        List<Personas> lp = q.list();
        listaVictimasOption = new ArrayList<Option>();
        listaDenunciadosOption = new ArrayList<Option>();
        listaDenuncianteOption = new ArrayList<Option>();

        for (Personas p : lp) {
            listaVictimasOption.add(new Option(p.getDnPersona().toString(), p.getDnApellidoNombre()));
            listaDenunciadosOption.add(new Option(p.getDnPersona().toString(), p.getDnApellidoNombre()));
            listaDenuncianteOption.add(new Option(p.getDnPersona().toString(), p.getDnApellidoNombre()));
        }
        tran.commit();
    }

    private void buildMedios() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Medios ");

        listaMedios = q.list();
        listaMediosOption = new ArrayList<Option>();
        for (Medios m : listaMedios) {
            listaMediosOption.add(new Option(m.getMeMedio().toString(), m.getMeDescripcion()));
        }

        if (getSessionBean1().getMedio() != null) {
            dropMedio.setSelected(getSessionBean1().getMedio().getMeMedio().toString());
        }
        tran.commit();
    }

    private void buildCiudades(String where) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();
        try {
            tran.begin();
            listaCiudades = session.createQuery(" from Ciudades " + where).list();
            listaCiudadesOption = new ArrayList<Option>();
            for (Ciudades c : listaCiudades) {
                listaCiudadesOption.add(new Option(c.getCiCiudad().toString(), c.getCiDescripcion()));
            }
            tran.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tran.rollback();
        }
    }

    private void buildDepartamentos(String where) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();
        Query q = session.createQuery("from Departamentos " + where);
        listaDepartamentos = q.list();
        listaDepartamentosOption = new ArrayList<Option>();
        for (Departamentos c : listaDepartamentos) {
            listaDepartamentosOption.add(new Option(c.getDpDepartamento().toString(), c.getDpDescripcion()));
        }
        tran.commit();
    }

    private void buildDerivaciones() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();
        Query q = session.createQuery("from Derivaciones");


        listaDerivaciones = q.list();
        listaDerivacionesOption = new ArrayList<Option>();
        for (Derivaciones c : listaDerivaciones) {
            listaDerivacionesOption.add(new Option(c.getDrDerivacion().toString(), c.getDrDescripcion()));
        }
        tran.commit();
    }

    private void buildInstancias() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();

        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Instancias");


        listaInstancias = q.list();
        listaInstanciasOption = new ArrayList<Option>();
        for (Instancias c : listaInstancias) {
            listaInstanciasOption.add(new Option(c.getInInstancia().toString(), c.getInDescripcion()));
        }

        tran.commit();
    }

    private void buildBarrios(String where) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();
        try {
            listaBarrios = session.createQuery("from Barrios " + where).list();
            listaBarriosOption = new ArrayList<Option>();
            for (Barrios c : listaBarrios) {
                listaBarriosOption.add(new Option(c.getBaBarrio().toString(), c.getBaDescripcion()));
            }
            tran.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tran.rollback();
        }
    }

    private void buildTipos() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Tipos");

        listaTipos = q.list();
        listaTiposOption = new ArrayList<Option>();
        for (Tipos c : listaTipos) {
            listaTiposOption.add(new Option(c.getTiTipo().toString(), c.getTiDescripcion()));
        }
        tran.commit();
    }

    private void buildResponsables(String where) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Responsables " + where);

        listaResponsables = q.list();
        listaResponsablesOption = new ArrayList<Option>();
        for (Responsables c : listaResponsables) {
            listaResponsablesOption.add(new Option(c.getReId().toString(), c.getReApellidoNombre()));
        }
        tran.commit();
    }

    private void buildRegion(String where) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Region " + where);

        listaRegiones = q.list();
        listaRegionesOption = new ArrayList<Option>();
        for (Region c : listaRegiones) {
            listaRegionesOption.add(new Option(c.getRgRegion().toString(), c.getRgDescripcion()));
        }
        tran.commit();
    }

    private void buildRelacionesDenunciado() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Relaciones ");

        listaRelacionesDenunciado = q.list();
        listaRelacionesDenunciadoOption = new ArrayList<Option>();
        for (Relaciones c : listaRelacionesDenunciado) {
            listaRelacionesDenunciadoOption.add(new Option(c.getReRelacion().toString(), c.getReDescripcion()));
        }
        tran.commit();
    }

    private void buildRelacionesDenunciante() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction tran = session.beginTransaction();

        Query q = session.createQuery("from Relaciones ");

        listaRelacionesDenunciante = q.list();
        listaRelacionesDenuncianteOption = new ArrayList<Option>();
        for (Relaciones c : listaRelacionesDenunciante) {
            listaRelacionesDenuncianteOption.add(new Option(c.getReRelacion().toString(), c.getReDescripcion()));
        }
        tran.commit();
    }

    private void buildEstados() {
        listaEstadosOption = new ArrayList<Option>();
        listaEstadosOption.add(new Option("1", "Iniciado"));
        listaEstadosOption.add(new Option("2", "Indagacion"));
        listaEstadosOption.add(new Option("3", "Cerrado"));
    }
    // entidades
    private Denuncias denuncia;
    private List<Causas> listaCausas;
    private List<Paises> listaPaises;
    private List<Personas> listaPersonas;
    private List<Medios> listaMedios;
    private List<Ciudades> listaCiudades;
    private List<Departamentos> listaDepartamentos;
    private List<Derivaciones> listaDerivaciones;
    private List<Instancias> listaInstancias;
    private List<Barrios> listaBarrios;
    private List<Tipos> listaTipos;
    private List<Region> listaRegiones;
    private List<Sector> listaSectores;
    private List<Responsables> listaResponsables;
    private List<Relaciones> listaRelacionesDenunciante;
    private List<Relaciones> listaRelacionesDenunciado;
    private PersonaDenuncia victimaDenuncia;
    private PersonaDenuncia victimaDenunciado;
    private PersonaDenuncia victimaDenunciante;
    // option
    private List<Option> listaSectoresOption;
    private List<Option> listaCausasOption;
    private List<Option> listaVictimasOption;
    private List<Option> listaResponsablesOption;
    private List<Option> listaMediosOption;
    private List<Option> listaPaisesOption;
    private List<Option> listaDepartamentosOption;
    private List<Option> listaCiudadesOption;
    private List<Option> listaEstadosOption;
    private List<Option> listaRegionesOption;
    private List<Option> listaDerivacionesOption;
    private List<Option> listaInstanciasOption;
    private List<Option> listaBarriosOption;
    private List<Option> listaTiposOption;
    private List<Option> listaDenunciadosOption;
    private List<Option> listaDenuncianteOption;
    private List<Option> listaVictimaOption;
    private List<Option> listaRelacionesDenuncianteOption;
    private List<Option> listaRelacionesDenunciadoOption;
    private List<Option> listaSituacionLlegadaOption;
    private List<Option> listaSituacionPoblacionalOption;
    // flags de actualizacion de combos
    private boolean barrioUpd = false;
    private boolean regionUpd = false;
    private boolean departamentoUpd = false;
    private boolean ciudadUpd = false;

    public List<Option> getListaSituacionLlegadaOption() {
        listaSituacionLlegadaOption = new ArrayList<Option>();
        try {
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            List<SituacionLlegada> l = s.createQuery("from SituacionLlegada").list();
            for (SituacionLlegada si : l) {
                listaSituacionLlegadaOption.add(new Option(si.getSlSituacionLlegada().toString(), si.getSlDescripcion()));
            }
            t.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaSituacionLlegadaOption;
    }

    public void setListaSituacionLlegadaOption(List<Option> listaSituacionLlegadaOption) {
        this.listaSituacionLlegadaOption = listaSituacionLlegadaOption;
    }

    public List<Option> getListaSituacionPoblacionalOption() {
        listaSituacionPoblacionalOption = new ArrayList<Option>();
        try {
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            List<SituacionPoblacional> l = s.createQuery("from SituacionPoblacional").list();
            for (SituacionPoblacional si : l) {
                listaSituacionPoblacionalOption.add(new Option(si.getSpSituacionPoblacional().toString(), si.getSpDescripcion()));
            }
            t.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaSituacionPoblacionalOption;
    }

    public void setListaSituacionPoblacionalOption(List<Option> listaSituacionPoblacionalOption) {
        this.listaSituacionPoblacionalOption = listaSituacionPoblacionalOption;
    }

    public List<Option> getListaVictimaOption() {
        try {
            listaVictimaOption = new ArrayList<Option>();
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            List<Personas> l = s.createQuery("from Personas").list();
            for (Personas personas : l) {
                listaVictimaOption.add(new Option(personas.getDnPersona().toString(), personas.getDnCedula() + " - " + personas.getDnApellidoNombre()));
            }
            t.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaVictimaOption;
    }

    public void setListaVictimaOption(List<Option> listaVictimaOption) {
        this.listaVictimaOption = listaVictimaOption;
    }

    public List<Relaciones> getListaRelacionesDenunciado() {
        return listaRelacionesDenunciado;
    }

    public void setListaRelacionesDenunciado(List<Relaciones> listaRelacionesDenunciado) {
        this.listaRelacionesDenunciado = listaRelacionesDenunciado;
    }

    public List<Option> getListaRelacionesDenunciadoOption() {
        return listaRelacionesDenunciadoOption;
    }

    public void setListaRelacionesDenunciadoOption(List<Option> listaRelacionesDenunciadoOption) {
        this.listaRelacionesDenunciadoOption = listaRelacionesDenunciadoOption;
    }

    public List<Relaciones> getListaRelacionesDenunciante() {
        return listaRelacionesDenunciante;
    }

    public void setListaRelacionesDenunciante(List<Relaciones> listaRelacionesDenunciante) {
        this.listaRelacionesDenunciante = listaRelacionesDenunciante;
    }

    public List<Option> getListaRelacionesDenuncianteOption() {
        return listaRelacionesDenuncianteOption;
    }

    public void setListaRelacionesDenuncianteOption(List<Option> listaRelacionesDenuncianteOption) {
        this.listaRelacionesDenuncianteOption = listaRelacionesDenuncianteOption;
    }

    public List<Sector> getListaSectores() {
        return listaSectores;
    }

    public void setListaSectores(List<Sector> listaSectores) {
        this.listaSectores = listaSectores;
    }

    public List<Option> getListaSectoresOption() {
        return listaSectoresOption;
    }

    public void setListaSectoresOption(List<Option> listaSectoresOption) {
        this.listaSectoresOption = listaSectoresOption;
    }

    public List<Region> getListaRegiones() {
        return listaRegiones;
    }

    public void setListaRegiones(List<Region> listaRegiones) {
        this.listaRegiones = listaRegiones;
    }

    public List<Responsables> getListaResponsables() {
        return listaResponsables;
    }

    public void setListaResponsables(List<Responsables> listaResponsables) {
        this.listaResponsables = listaResponsables;
    }

    public List<Option> getListaDenunciadosOption() {
        try {
            listaDenunciadosOption = new ArrayList<Option>();
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            List<Personas> l = s.createQuery("from Personas").list();
            for (Personas personas : l) {
                listaDenunciadosOption.add(new Option(personas.getDnPersona().toString(), personas.getDnCedula() + " - " + personas.getDnApellidoNombre()));
            }
            t.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaDenunciadosOption;
    }

    public void setListaDenunciadosOption(List<Option> listaDenunciadosOption) {
        this.listaDenunciadosOption = listaDenunciadosOption;
    }

    public List<Option> getListaDenuncianteOption() {
        try {
            listaDenuncianteOption = new ArrayList<Option>();
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            List<Personas> l = s.createQuery("from Personas").list();
            for (Personas personas : l) {
                listaDenuncianteOption.add(new Option(personas.getDnPersona().toString(), personas.getDnCedula() + " - " + personas.getDnApellidoNombre()));
            }
            t.commit();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaDenuncianteOption;
    }

    public void setListaDenuncianteOption(List<Option> listaDenuncianteOption) {
        this.listaDenuncianteOption = listaDenuncianteOption;
    }

    public List<Barrios> getListaBarrios() {
        return listaBarrios;
    }

    public void setListaBarrios(List<Barrios> listaBarrios) {
        this.listaBarrios = listaBarrios;
    }

    public List<Causas> getListaCausas() {
        return listaCausas;
    }

    public void setListaCausas(List<Causas> listaCausas) {
        this.listaCausas = listaCausas;
    }

    public List<Ciudades> getListaCiudades() {
        return listaCiudades;
    }

    public void setListaCiudades(List<Ciudades> listaCiudades) {
        this.listaCiudades = listaCiudades;
    }

    public List<Departamentos> getListaDepartamentos() {
        return listaDepartamentos;
    }

    public void setListaDepartamentos(List<Departamentos> listaDepartamentos) {
        this.listaDepartamentos = listaDepartamentos;
    }

    public List<Derivaciones> getListaDerivaciones() {
        return listaDerivaciones;
    }

    public void setListaDerivaciones(List<Derivaciones> listaDerivaciones) {
        this.listaDerivaciones = listaDerivaciones;
    }

    public List<Option> getListaRegionesOption() {
        return listaRegionesOption;
    }

    public void setListaRegionesOption(List<Option> listaRegionesOption) {
        this.listaRegionesOption = listaRegionesOption;
    }

    public List<Instancias> getListaInstancias() {
        return listaInstancias;
    }

    public void setListaInstancias(List<Instancias> listaInstancias) {
        this.listaInstancias = listaInstancias;
    }

    public List<Medios> getListaMedios() {
        return listaMedios;
    }

    public void setListaMedios(List<Medios> listaMedios) {
        this.listaMedios = listaMedios;
    }

    public List<Paises> getListaPaises() {
        return listaPaises;
    }

    public void setListaPaises(List<Paises> listaPaises) {
        this.listaPaises = listaPaises;
    }

    public List<Personas> getListaPersonas() {
        return listaPersonas;
    }

    public void setListaPersonas(List<Personas> listaPersonas) {
        this.listaPersonas = listaPersonas;
    }

    public List<Tipos> getListaTipos() {
        return listaTipos;
    }

    public void setListaTipos(List<Tipos> listaTipos) {
        this.listaTipos = listaTipos;
    }

    public PersonaDenuncia getVictimaDenuncia() {
        return victimaDenuncia;
    }

    public void setVictimaDenuncia(PersonaDenuncia victimaDenuncia) {
        this.victimaDenuncia = victimaDenuncia;
    }

    public PersonaDenuncia getVictimaDenunciado() {
        return victimaDenunciado;
    }

    public void setVictimaDenunciado(PersonaDenuncia victimaDenunciado) {
        this.victimaDenunciado = victimaDenunciado;
    }

    public PersonaDenuncia getVictimaDenunciante() {
        return victimaDenunciante;
    }

    public void setVictimaDenunciante(PersonaDenuncia victimaDenunciante) {
        this.victimaDenunciante = victimaDenunciante;
    }

    public List<Option> getListaBarriosOption() {
        return listaBarriosOption;
    }

    public void setListaBarriosOption(List<Option> listaBarriosOption) {
        this.listaBarriosOption = listaBarriosOption;
    }

    public List<Option> getListaCausasOption() {
        return listaCausasOption;
    }

    public void setListaCausasOption(List<Option> listaCausasOption) {
        this.listaCausasOption = listaCausasOption;
    }

    public List<Option> getListaCiudadesOption() {
        return listaCiudadesOption;
    }

    public void setListaCiudadesOption(List<Option> listaCiudadesOption) {
        this.listaCiudadesOption = listaCiudadesOption;
    }

    public List<Option> getListaDepartamentosOption() {
        return listaDepartamentosOption;
    }

    public void setListaDepartamentosOption(List<Option> listaDepartamentosOption) {
        this.listaDepartamentosOption = listaDepartamentosOption;
    }

    public List<Option> getListaDerivacionesOption() {
        return listaDerivacionesOption;
    }

    public void setListaDerivacionesOption(List<Option> listaDerivacionesOption) {
        this.listaDerivacionesOption = listaDerivacionesOption;
    }

    public List<Option> getListaEstadosOption() {
        return listaEstadosOption;
    }

    public void setListaEstadosOption(List<Option> listaEstadosOption) {
        this.listaEstadosOption = listaEstadosOption;
    }

    public List<Option> getListaInstanciasOption() {
        return listaInstanciasOption;
    }

    public void setListaInstanciasOption(List<Option> listaInstanciasOption) {
        this.listaInstanciasOption = listaInstanciasOption;
    }

    public List<Option> getListaMediosOption() {
        return listaMediosOption;
    }

    public void setListaMediosOption(List<Option> listaMediosOption) {
        this.listaMediosOption = listaMediosOption;
    }

    public List<Option> getListaPaisesOption() {
        return listaPaisesOption;
    }

    public void setListaPaisesOption(List<Option> listaPaisesOption) {
        this.listaPaisesOption = listaPaisesOption;
    }

    public List<Option> getListaResponsablesOption() {
        return listaResponsablesOption;
    }

    public void setListaResponsablesOption(List<Option> listaResponsablesOption) {
        this.listaResponsablesOption = listaResponsablesOption;
    }

    public List<Option> getListaTiposOption() {
        return listaTiposOption;
    }

    public void setListaTiposOption(List<Option> listaTiposOption) {
        this.listaTiposOption = listaTiposOption;
    }

    public void dropDepartamento_processValueChange(ValueChangeEvent event) {
        buildCiudades(" where ciDepartamento.dpDepartamento = " + dropDepartamento.getSelected().toString());
        departamentoUpd = true;
        ajaxProcessing = true;
    }

    public void dropCiudad_processValueChange(ValueChangeEvent event) {
        buildBarrios(" where baCiudad.ciCiudad = " + dropCiudad.getSelected().toString());
        ciudadUpd = true;
        ajaxProcessing = true;
    }

    public String btnCancel_action() {
        getSessionBean1().setDenuncia(null);
        return "denuncia_cancel";
    }

    private Integer getConcurrencia(Session s, String idPersona, String idCausa) {
        String sql = "select max(d.deConcurrencia) + 1 from Denuncias d join " +
                " d.personaDenunciaSet pd where pd.personas.dnPersona = " + idPersona + " and d.deCausa.caCausa = " + idCausa;
        Integer concurrencia = (Integer) s.createQuery(sql).list().get(0);
        System.out.print(sql + " " + concurrencia);
        return concurrencia;
    }

    public String btnOk_action() {

        if (txtIdDenunciado.getText() != null && txtIdDenunciante.getText() != null && txtIdVictima.getText() != null && calFecha.getSelectedDate() != null) {
            try {
                Session session = HibernateUtil.getSessionFactory().getCurrentSession();
                Transaction tran = session.beginTransaction();

                if (getSessionBean1().getDenuncia() == null) {
                    denuncia = new Denuncias();
                } else {
                    denuncia = getSessionBean1().getDenuncia();
                }

                // insercion de la denuncia
                denuncia.setDeFechaHora(calFecha.getSelectedDate());

                denuncia.setDeConcurrencia(getConcurrencia(session, txtIdVictima.getText().toString(), dropCausa.getSelected().toString()));
                denuncia.setDeResponsable((Responsables) session.load(Responsables.class, Integer.parseInt(dropResponsable.getSelected().toString())));
                denuncia.setDeMedio((Medios) session.load(Medios.class, Integer.parseInt(dropMedio.getSelected().toString())));
                denuncia.setDeCausa((Causas) session.load(Causas.class, Integer.parseInt(dropCausa.getSelected().toString())));
                denuncia.setDeEstado(dropEstado.getSelected().toString().toCharArray()[0]);
                denuncia.setDeDerivacion((Derivaciones) session.load(Derivaciones.class, Integer.parseInt(dropDerivacion.getSelected().toString())));
                denuncia.setDeInstancia((Instancias) session.load(Instancias.class, Integer.parseInt(dropInstancia.getSelected().toString())));
                denuncia.setDeTipo((Tipos) session.load(Tipos.class, Integer.parseInt(dropTipo.getSelected().toString())));
                denuncia.setDpDepartamento((Departamentos) session.load(Departamentos.class, Integer.parseInt(dropDepartamento.getSelected().toString())));
                denuncia.setCiCiudad((Ciudades) session.load(Ciudades.class, Integer.parseInt(dropCiudad.getSelected().toString())));
                denuncia.setBaBarrio((Barrios) session.load(Barrios.class, Integer.parseInt(dropBarrio.getSelected().toString())));
                denuncia.setDeSector((Sector) session.load(Sector.class, Integer.parseInt(dropSector.getSelected().toString())));
                denuncia.setDeSituacionLlegada((SituacionLlegada) session.load(SituacionLlegada.class, Integer.parseInt(dropSituacionLlegada.getSelected().toString())));
                denuncia.setDeSituacionPoblacional((SituacionPoblacional) session.load(SituacionPoblacional.class, Integer.parseInt(dropSituacionPoblacional.getSelected().toString())));
                if (txtObservacion.getText() != null) {
                    denuncia.setDeObservacion(txtObservacion.getText().toString());
                }

                if (getSessionBean1().getDenuncia() == null) {
                    session.save(denuncia);
                } else {
                    denuncia = (Denuncias) session.merge(denuncia);
                }

                // relaciones de la denuncia
                Relaciones relacionDenunciado = (Relaciones) session.load(Relaciones.class, Integer.parseInt(dropRelDenunciado.getSelected().toString()));
                Relaciones relacionDenunciante = (Relaciones) session.load(Relaciones.class, Integer.parseInt(dropRelDenunciante.getSelected().toString()));
                System.out.println("Victima : " + txtIdVictima.getText().toString() + "\nDenunciado : " + txtIdDenunciado.getText().toString() + "\nDenunciante : " + txtIdDenunciante.getText().toString());
                Personas victima = (Personas) session.load(Personas.class, Integer.parseInt(txtIdVictima.getText().toString()));
                Personas denunciado = (Personas) session.load(Personas.class, Integer.parseInt(txtIdDenunciado.getText().toString()));
                Personas denunciante = (Personas) session.load(Personas.class, Integer.parseInt(txtIdDenunciante.getText().toString()));

                // si update se eliminan las relaciones N:N
                if (getSessionBean1().getDenuncia() != null) {
                    for (PersonaDenuncia pd : denuncia.getPersonaDenunciaSet()) {
                        session.delete(pd);
                    }
                }

                PersonaDenuncia pdVictima = new PersonaDenuncia(denuncia.getDeDenuncia(), victima.getDnPersona(), TiposPersonas.VICTIMA);
                pdVictima.setPdRelacion1(relacionDenunciado);
                pdVictima.setPdRelacion2(relacionDenunciante);
                session.merge(pdVictima);
                PersonaDenuncia pdDenunciado = new PersonaDenuncia(denuncia.getDeDenuncia(), denunciado.getDnPersona(), TiposPersonas.DENUNCIADO);
                session.merge(pdDenunciado);
                PersonaDenuncia pdDenunciante = new PersonaDenuncia(denuncia.getDeDenuncia(), denunciante.getDnPersona(), TiposPersonas.DENUNCIANTE);
                session.merge(pdDenunciante);
                tran.commit();
                getSessionBean1().setDenuncia(null);
                return "success";
            } catch (NumberFormatException e) {
                e.printStackTrace();
                error("Ha ocurrido un error, favor volver a intentarlo. Si el error persiste contacte al administrador del sistema");
                return null;
            } catch (Exception e) {
                e.printStackTrace();
                getSessionBean1().setDenuncia(null);
                return "insert_fail";
            }
        } else {
            this.renderResponse();
            error(Messages.INSERCION_FALLIDA + ". Favor ingresar todos los valores.");
            return null;
        }
    }

    public String btnNew_action() {
        getSessionBean1().setDenuncia(null);
        return null;
    }
    private boolean ajaxProcessing = false;

    public void txtIdDenunciante_processValueChange(ValueChangeEvent event) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = s.beginTransaction();
        try {
            if (txtIdDenunciante.getText() != null) {
                Personas denunciante = (Personas) s.load(Personas.class, Integer.parseInt(txtIdDenunciante.getText().toString()));
                if (denunciante != null) {
                    txtDenunciante.setText(denunciante.getDnApellidoNombre());
                } else {
                    txtDenunciante.setText("");
                }
            } else {
                txtDenunciante.setText("");
            }
            t.commit();
            ajaxProcessing = true;
        } catch (NumberFormatException e) {
            error("Ingrese un valor numerico para la busqueda de personas por codigo.");
            t.rollback();
        } catch (Exception e) {
            e.printStackTrace();
            t.rollback();
        }
    }

    public void txtIdDenunciado_processValueChange(ValueChangeEvent event) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = s.beginTransaction();
        try {
            if (txtIdDenunciado.getText() != null) {
                Personas denunciado = (Personas) s.load(Personas.class, Integer.parseInt(txtIdDenunciado.getText().toString()));
                if (denunciado != null) {
                    txtDenunciado.setText(denunciado.getDnApellidoNombre());
                } else {
                    txtDenunciado.setText("");
                }

            } else {
                txtDenunciado.setText("");
            }
            t.commit();
            ajaxProcessing = true;
        } catch (NumberFormatException e) {
            error("Ingrese un valor numerico para la busqueda de personas por codigo.");
            t.rollback();
        } catch (Exception e) {
            e.printStackTrace();
            t.rollback();
        }
    }

    public void txtIdVictima_processValueChange(ValueChangeEvent event) {
        Session s = HibernateUtil.getSessionFactory().getCurrentSession();
        Transaction t = s.beginTransaction();
        try {
            if (txtIdVictima.getText() != null) {
                Personas victima = (Personas) s.load(Personas.class, Integer.parseInt(txtIdVictima.getText().toString()));
                if (victima != null) {
                    txtVictima.setText(victima.getDnApellidoNombre());
                } else {
                    txtVictima.setText("");
                }
            } else {
                txtVictima.setText("");
            }
            t.commit();
            ajaxProcessing = true;
        } catch (NumberFormatException e) {
            Log4JLogger l = new Log4JLogger();
            l.info("hol");
            error("Ingrese un valor numerico para la busqueda de personas por codigo.");
            t.rollback();
        } catch (Exception e) {
            e.printStackTrace();
            t.rollback();
        }
    }

    public String btnPrint_action() {
        if (txtDenuncia.getText() != null && !txtDenuncia.getText().toString().equals("")) {
            DAVReporter davRep = new DAVReporter();
            ServletContext theApplicationsServletContext = (ServletContext) this.getExternalContext().getContext();
            Map params = new HashMap();
            params.put("denuncia_id", Integer.parseInt(txtDenuncia.getText().toString()));
            Session s = HibernateUtil.getSessionFactory().getCurrentSession();
            Transaction t = s.beginTransaction();
            try {
                List l = s.createQuery("from Denuncias where deDenuncia = " + txtDenuncia.getText().toString()).list();
                JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(l);
                t.commit();
                davRep.getReport("denuncias_dav.jasper", params, theApplicationsServletContext, "");
            } catch (Exception e) {
                error(Messages.PROBLEMAS_REPORTE);
                e.printStackTrace();
            }
        }
        return null;
    }
}

